package edu.unmsm.ocaa.sisocaa.negocio.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import edu.unmsm.ocaa.sisocaa.integracion.dao.ComentarioDAO;
import edu.unmsm.ocaa.sisocaa.integracion.dao.Reporte2DAO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.ComentarioDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.EncuestaDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.Reporte2DTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.Reporte2yComDTO;
import edu.unmsm.ocaa.sisocaa.negocio.service.Reporte2Service;

@Service
public class Reporte2ServiceImpl implements Reporte2Service {

	@Resource
	Reporte2DAO rep2dao;
	@Resource
	ComentarioDAO comdao;
	public List<Reporte2DTO> listarReportes2(Integer formid)
			throws DataAccessException {
		// TODO Auto-generated method stub
		return rep2dao.getListReporte2Tot(formid);
	}

	public List<Reporte2DTO> listarReportes2Porc(Integer formid)
			throws DataAccessException {
		// TODO Auto-generated method stub
		return rep2dao.getListReporte2Porc(formid);
	}

	public List<Reporte2yComDTO> listarReportes2conComen(Integer formid)
			throws DataAccessException {
		List<Reporte2DTO> listrep2=rep2dao.getListReporte2Tot(formid);
		List<Reporte2yComDTO> listrep2com=new ArrayList<Reporte2yComDTO>();
		for (int i = 0; i < listrep2.size(); i++) {
			Reporte2DTO rep2=listrep2.get(i);
			Reporte2yComDTO rep2com=new Reporte2yComDTO();
			rep2com=aniadirTotalesxPreg(rep2com, rep2);
			rep2com=aniadirComentariosxPReg(rep2com, rep2);
			listrep2com.add(rep2com);
		}
		return listrep2com;
	}

	private Reporte2yComDTO aniadirComentariosxPReg(Reporte2yComDTO rep2com,
			Reporte2DTO rep2) {
		List<ComentarioDTO> comens= new ArrayList<ComentarioDTO>();

		//pregunta
		for(int j=0;j<33;j++){
			List<EncuestaDTO> encs=new ArrayList<EncuestaDTO>();
			comens=comdao.getComentariosRep2(rep2.getUnidep(),j+1, rep2com.getFormid());
			for (int i = 0; i < comens.size(); i++) {
				EncuestaDTO enc=new EncuestaDTO();
				ComentarioDTO com=comens.get(i);
				enc.setPq(com.getPorque());
				enc.setSol(com.getSolucion());
				enc.setPreg(com.getPreg());
				encs.add(enc);
			}
			if(j+1==1){
				rep2com.setPq1(encs);				
			}else 
			if(j+1==2){
				rep2com.setPq2(encs);
			}else 
			if(j+1==3){
				rep2com.setPq3(encs);
			}else 
			if(j+1==4){
				rep2com.setPq4(encs);
			}else 
			if(j+1==5){
				rep2com.setPq5(encs);
			}else 
			if(j+1==6){
				rep2com.setPq6(encs);
			}else 
			if(j+1==7){
				rep2com.setPq7(encs);
			}else 
			if(j+1==8){
				rep2com.setPq8(encs);
			}else 
			if(j+1==9){
				rep2com.setPq9(encs);
			}else 
			if(j+1==10){
				rep2com.setPq10(encs);
			}else 
			if(j+1==11){
				rep2com.setPq11(encs);
			}else 
			if(j+1==12){
				rep2com.setPq12(encs);
			}else 
			if(j+1==13){
				rep2com.setPq13(encs);
			}else 
			if(j+1==14){
				rep2com.setPq14(encs);
			}else 
			if(j+1==15){
				rep2com.setPq15(encs);
			}else 
			if(j+1==16){
				rep2com.setPq16(encs);
			}else 
			if(j+1==17){
				rep2com.setPq17(encs);
			}else 
			if(j+1==18){
				rep2com.setPq18(encs);
			}else 
			if(j+1==19){
				rep2com.setPq19(encs);
			}else 
			if(j+1==20){
				rep2com.setPq20(encs);
			}else 
			if(j+1==21){rep2com.setPq21(encs);
			}else 
			if(j+1==22){rep2com.setPq22(encs);
			}else 
			if(j+1==23){rep2com.setPq23(encs);
			}else 
			if(j+1==24){
			rep2com.setPq24(encs);
			}else 
			if(j+1==25){rep2com.setPq25(encs);
			}else 
			if(j+1==26){rep2com.setPq26(encs);
			}else 
			if(j+1==27){rep2com.setPq27(encs);
			}else 
			if(j+1==28){rep2com.setPq28(encs);
			}else 
			if(j+1==29){rep2com.setPq29(encs);
			}else 
			if(j+1==30){rep2com.setPq30(encs);
			}else 
			if(j+1==31){rep2com.setPq31(encs);
			}else 
			if(j+1==32){rep2com.setPq32(encs);
			}else 
			if(j+1==33){rep2com.setPq33(encs);
			}
		}
		//fin pregunta
		return rep2com;
	}

	private Reporte2yComDTO aniadirTotalesxPreg(Reporte2yComDTO rep2com,
			Reporte2DTO rep2) {
		// TODO Auto-generated method stub
		rep2com.setFormid(rep2.getFormid());
		rep2com.setResp1si(rep2.getResp1si());
		rep2com.setResp1no(rep2.getResp1no());
		rep2com.setResp2si(rep2.getResp2si());
		rep2com.setResp2no(rep2.getResp2no());
		rep2com.setResp3si(rep2.getResp3si());
		rep2com.setResp3no(rep2.getResp3no());
		rep2com.setResp4si(rep2.getResp4si());
		rep2com.setResp4no(rep2.getResp4no());
		rep2com.setResp5si(rep2.getResp5si());
		rep2com.setResp5no(rep2.getResp5no());
		rep2com.setResp6si(rep2.getResp6si());
		rep2com.setResp6no(rep2.getResp6no());
		rep2com.setResp7si(rep2.getResp7si());
		rep2com.setResp7no(rep2.getResp7no());
		rep2com.setResp8si(rep2.getResp8si());
		rep2com.setResp8no(rep2.getResp8no());
		rep2com.setResp9si(rep2.getResp9si());
		rep2com.setResp9no(rep2.getResp9no());
		rep2com.setResp10si(rep2.getResp10si());
		rep2com.setResp10no(rep2.getResp10no());
		rep2com.setResp11si(rep2.getResp11si());
		rep2com.setResp11no(rep2.getResp11no());
		rep2com.setResp12si(rep2.getResp12si());
		rep2com.setResp12no(rep2.getResp12no());
		rep2com.setResp13si(rep2.getResp13si());
		rep2com.setResp13no(rep2.getResp13no());
		rep2com.setResp14si(rep2.getResp14si());
		rep2com.setResp14no(rep2.getResp14no());
		rep2com.setResp15si(rep2.getResp15si());
		rep2com.setResp15no(rep2.getResp15no());
		rep2com.setResp16si(rep2.getResp16si());
		rep2com.setResp16no(rep2.getResp16no());
		rep2com.setResp17si(rep2.getResp17si());
		rep2com.setResp17no(rep2.getResp17no());
		rep2com.setResp18si(rep2.getResp18si());
		rep2com.setResp18no(rep2.getResp18no());
		rep2com.setResp19si(rep2.getResp19si());
		rep2com.setResp19no(rep2.getResp19no());
		rep2com.setResp20si(rep2.getResp20si());
		rep2com.setResp20no(rep2.getResp20no());
		rep2com.setResp21si(rep2.getResp21si());
		rep2com.setResp21no(rep2.getResp21no());
		rep2com.setResp22si(rep2.getResp22si());
		rep2com.setResp22no(rep2.getResp22no());
		rep2com.setResp23si(rep2.getResp23si());
		rep2com.setResp23no(rep2.getResp23no());
		rep2com.setResp24si(rep2.getResp24si());
		rep2com.setResp24no(rep2.getResp24no());
		rep2com.setResp25si(rep2.getResp25si());
		rep2com.setResp25no(rep2.getResp25no());
		rep2com.setResp26si(rep2.getResp26si());
		rep2com.setResp26no(rep2.getResp26no());
		rep2com.setResp27si(rep2.getResp27si());
		rep2com.setResp27no(rep2.getResp27no());
		rep2com.setResp28si(rep2.getResp28si());
		rep2com.setResp28no(rep2.getResp28no());
		rep2com.setResp29si(rep2.getResp29si());
		rep2com.setResp29no(rep2.getResp29no());
		rep2com.setResp30si(rep2.getResp30si());
		rep2com.setResp30no(rep2.getResp30no());
		rep2com.setResp31si(rep2.getResp31si());
		rep2com.setResp31no(rep2.getResp31no());
		rep2com.setResp32si(rep2.getResp32si());
		rep2com.setResp32no(rep2.getResp32no());
		rep2com.setResp33si(rep2.getResp33si());
		rep2com.setResp33no(rep2.getResp33no());
		return rep2com;
	}

	public List<Reporte2yComDTO> listarReportes2conComenPorc(Integer formid)
			throws DataAccessException {
		// TODO Auto-generated method stub
		List<Reporte2DTO> listrep2=rep2dao.getListReporte2Porc(formid);
		List<Reporte2yComDTO> listrep2com=new ArrayList<Reporte2yComDTO>();
		for (int i = 0; i < listrep2.size(); i++) {
			Reporte2DTO rep2=listrep2.get(i);
			Reporte2yComDTO rep2com=new Reporte2yComDTO();
			rep2com=aniadirTotalesxPreg(rep2com, rep2);
			rep2com=aniadirComentariosxPReg(rep2com, rep2);
			listrep2com.add(rep2com);
		}
		return listrep2com;
	}
}
